import logging

# 使用自定义日志处理器探测logger名称
# ==== 运行时使用自定义日志处理器探测logger名称 ====
# 用于存储检测到的logger名称
detected_loggers = set()


class LoggerDetectionHandler(logging.Handler):
    """自定义日志处理器，用于捕获所有logger名称"""

    def emit(self, record):
        # 记录产生日志的logger名称
        detected_loggers.add(record.name)


def setup_logger_detection():
    """设置logger检测"""
    # 创建并添加自定义处理器到根logger
    detection_handler = LoggerDetectionHandler()
    root_logger = logging.getLogger()
    root_logger.addHandler(detection_handler)
    # 保存原始级别并设置为DEBUG以捕获所有日志
    original_level = root_logger.level
    root_logger.setLevel(logging.DEBUG)
    return detection_handler, original_level


def get_detected_logger_names():
    """获取检测到的logger名称"""
    return sorted(list(detected_loggers))


# 使用示例
if __name__ == "__main__":
    # 设置logger检测
    handler, original_level = setup_logger_detection()

    # 在这里导入并使用你的第三方库
    # 示例：
    # import requests
    # response = requests.get('https://www.baidu.com')

    # 获取 PaddleOCR 库  logger_name
    from paddleocr import PaddleOCR

    ocr = PaddleOCR(device='cpu', lang='ch')

    # 打印检测到的logger名称
    print("检测到的第三方库logger名称:")
    for logger_name in get_detected_logger_names():
        print(f"  {logger_name}")

    # 清理：移除检测处理器
    logging.getLogger().removeHandler(handler)
